package edu.hawaii.duedates.user;

import java.io.Serializable;
import java.util.List;
import edu.hawaii.duedates.configuration.jaxb.Library;

/**
 * This interface is implemented for all users. It defines accessor, mutator, attribute, and
 * toString behaviors.
 * 
 * @author Ronn Reeves and Robin E. Raqueno
 */
public interface IUser extends Serializable {
  /**
   *  This returns a List of library based on the user.
   *  
   * @return List Library.
   */
  public List<Library> getLibrary();
  /**
   * Returns the user's name.
   * 
   * @return String The user's name.
   */
  public String getName();
  /**
   * Returns this user's password.
   * 
   * @return String The user's password.
   */
  public String getPassword();
  /**
   * Sets the user's name.
   * 
   * @param name which contains the new name.
   */
  public void setName(String name);
  /**
   * Returns this user's Email.
   * 
   * @return String The user Email.
   */
  public String getEmail();
  /**
   * Returns true if the user is valid.
   * 
   * @return Boolean The validity of the user.
   */
  public boolean isValid();
  /**
   * Sets this user's password.
   * 
   * @param password The user's password.
   */
  public void setPassword(String password);
  /**
   * Sets this user's Email.
   * 
   * @param email The user's Email.
   */
  public void setEmail(String email);
  /**
   * Sets the validity of this user.
   * 
   * @param validity The validity status of this user.
   */
  public void setValid(boolean validity);
  /**
   * Returns the user id.
   * 
   * @return String The user id.
   */
  public String toString();
}